Page({
  data: {
    userInfo: {
      avatar: '/assets/girl.png', // 默认头像
    }
  },

  // 页面加载时触发
  onLoad: function() {
    this.getUserInfoFromBackend();
  },

  // 从后端获取用户信息
  getUserInfoFromBackend: function() {
    const app = getApp();
    const token = app.globalData.userInfo.token; // 假设 token 存储在全局变量中
    const id = app.globalData.userInfo.id;


    wx.request({
      url: 'http://localhost:8080/manage/user/' + id, // 替换为你的后端接口地址
      method: 'GET',
      header: {
        'Authorization': `Bearer ${token}` // 携带 token
      },
      success: (res) => {
        if (res.statusCode === 200) {
          console.log(res);
          const userInfo = res.data.data;
          if(userInfo?.avatar == undefined || userInfo.avatar == '') {
            userInfo.avatar = this.data.userInfo.avatar;  
        }
          // 更新页面数据
          this.setData({
            isLoggedIn: true,
            userInfo: userInfo
          });
          console.log(userInfo);
        } else {
          wx.showToast({
            title: '获取用户信息失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('请求后端失败:', err);
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        });
      }
    });
  },

  // 选择头像（整合压缩逻辑）
  onChooseAvatar(e) {
    const { avatarUrl } = e.detail;
    const app = getApp();
    const token = app.globalData.userInfo.token;

    // 先压缩图片，再上传
    wx.compressImage({
      src: avatarUrl,          // 原始临时路径
      quality: 80,             // 压缩质量（建议 60-80）
      success: (compressRes) => {
        // 获取压缩后的临时路径
        const compressedPath = compressRes.tempFilePath;

        // 开始上传到OSS
        wx.uploadFile({
          url: 'http://localhost:8080/common/upload',
          filePath: compressedPath,  // 使用压缩后的路径
          name: 'file',
          header: {
            'Authorization': `Bearer ${token}`
          },
          success: (uploadRes) => {
            if (uploadRes.statusCode === 200) {
              const response = JSON.parse(uploadRes.data);
              const ossUrl = response.url;

              // 更新前端显示
              this.setData({
                'userInfo.avatar': ossUrl
              });

              // 调用后端更新用户信息
              this.updateUserAvatar(ossUrl);
            } else {
              wx.showToast({ title: '上传失败', icon: 'none' });
            }
          },
          fail: (uploadErr) => {
            console.error('上传失败:', uploadErr);
            wx.showToast({ title: '网络错误', icon: 'none' });
          }
        });
      },
      fail: (compressErr) => {
        console.error('压缩失败:', compressErr);
        // 压缩失败时尝试上传原图
        wx.showToast({ title: '压缩失败，尝试上传原图', icon: 'none' });
        this.uploadOriginalImage(avatarUrl); // 调用原图上传方法
      }
    });
  },

  // 压缩失败时上传原图
  uploadOriginalImage(originalPath) {
    const app = getApp();
    const token = app.globalData.userInfo.token;

    wx.uploadFile({
      url: 'http://localhost:8080/common/upload',
      filePath: originalPath,  // 使用原始路径
      name: 'file',
      header: {
        'Authorization': `Bearer ${token}`
      },
      success: (res) => {
        if (res.statusCode === 200) {
          const response = JSON.parse(res.data);
          this.setData({
            'userInfo.avatar': response.url
          });
          this.updateUserAvatar(response.url);
        }
      },
      fail: (err) => {
        console.error('原图上传失败:', err);
        wx.showToast({ title: '上传失败', icon: 'none' });
      }
    });
  },

// 更新用户头像到后端
  updateUserAvatar(avatarUrl) {
    const app = getApp();
    const token = app.globalData.userInfo.token;
    const id = app.globalData.userInfo.id;

    wx.request({
      url: `http://localhost:8080/manage/user/${id}`,
      method: 'PUT', // 根据你的接口实际情况调整
      header: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json'
      },
      data: {
        avatar: avatarUrl
      },
      success: (res) => {
        if (res.statusCode !== 200) {
          wx.showToast({ title: '更新头像失败', icon: 'none' });
        }
      },
      fail: (err) => {
        console.error('更新失败:', err);
      }
    });
  },

  // 跳转地址管理
  navigateToAddress() {
    wx.navigateTo({
      url: '/pages/address/address'
    });
  },

  navigateToMyAssess() {
    wx.navigateTo({
      url: '/pages/myassess/myassess'
    });
  }
});